//// 类模板
//#include <iostream>
//using namespace std;
//
//template<typename T>
//class CMath {
//public:
//    CMath(const T& t1, const T& t2) :m_t1(t1), m_t2(t2) {}
//    /*    T add(){
//            return m_t1 + m_t2;
//        }*/
//    T add();
//private:
//    T m_t1;
//    T m_t2;
//};
//
//template<typename T>
//T CMath<T>::add() {
//    return m_t1 + m_t2;
//}
//// class CMath<int>{ ... }  // 编译器实例化出的类
//// class CMath<double>{ ... }
//// class CMath<string>{ ... }
//int main(void) {
//    int nx = 10, ny = 20;
//    CMath<int>  m1(nx, ny);  // 类模板的实例化  并使用类模板的实例定义对象
//    cout << m1.add() << endl;
//
//    double dx = 1.23, dy = 4.56;
//    CMath<double> m2(dx, dy);
//    cout << m2.add() << endl;
//
//    string sx = "Hello,", sy = "world!";
//    CMath<string> m3(sx, sy);
//    cout << m3.add() << endl;
//    return 0;
//}
